iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
自我挑戰組

轉職仔與JavaScript的初次相遇系列 第 30

JavaScript傳值或傳址(下) - Day30

  • 分享至 

  • xImage
  •  

前言

今天會針對JavaScript Reference type的傳遞資料方式進行解釋介紹

說明

首先先看例子

const me = {name: ‘Jeremy’,age: 27};

Reference data會儲存在Heap內

在宣告變數時,JavaScript engine會
1.創建Identifier (創建me這個Identifier)
2.創建一個值的位址 (創建位址D30F,指向儲存在Heap中的物件)
3.在位址上儲存對物件的Reference (儲存Heap Address在me所引用的記憶體位址D30F中)

https://ithelp.ithome.com.tw/upload/images/20231013/20162465tzkUPEXRZf.png

D30F是一個指向Object {name: 'Jeremy', age: 27} 的Reference,不是直接儲存Object的記憶體位址

之後宣告一個friend變數,並將其值設置等於me,因此friend會直接指向me的Address(0003)
再更改friend.age數值成30,此時Heap裡頭的Value就會被變更

在Heap裡頭,特定位址的數值是可以更動的

https://ithelp.ithome.com.tw/upload/images/20231013/20162465enHsh06doF.png

由於Heap數值已經更改了,因此在使用friend.age時,最終會獲得30的值


上一篇
JavaScript傳值或傳址(上) - Day29
系列文
轉職仔與JavaScript的初次相遇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言